#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main()
{
  // 当读写锁一起请求时,写锁优先级高于读锁
  // 读锁可以多次上锁,即可以多个人一起读
  // 写和读不能同时操作

  pthread_rwlock_t rwlock;
  pthread_rwlock_init(&rwlock, NULL);
  pthread_rwlock_wrlock(&rwlock); // 写锁
  printf("write lock\n");
  sleep(5);
  pthread_rwlock_unlock(&rwlock); // 释放写锁

  pthread_rwlock_rdlock(&rwlock); // 读锁
  pthread_rwlock_rdlock(&rwlock); // 读锁
  printf("read lock\n");          // 读锁可以多次上锁,即可以多个人一起读
  sleep(5);
  pthread_rwlock_unlock(&rwlock); // 释放读锁
  pthread_rwlock_unlock(&rwlock); // 释放读锁

  pthread_rwlock_destroy(&rwlock); // 销毁锁
  return 0;
}